package com.zy.explore.search.interfaces.frm;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.solr.client.solrj.beans.Field;

/**
 * 建类说明：solr保存请求对象
 *
 * 要标注了 @Field 注解，且在对应的 solr_core 的schema中配置了对应字段的字段才能存入solr中
 *
 * 如此例中，在solr对应的 core 的 managed-schema 文件中增加了以下字段声明
 *   <field name="id" type="string"/>
 *   <field name="field1" type="string"/>
 *   <field name="field2" type="string"/>
 *   <field name="field3" type="string"/>
 *   <field name="field4" type="string"/>
 *
 * 但是此例中 field4 未标注 @Field 注解，则调用 addBean 方法传入该对象时，不会存入 field4
 * 如果声明的字段中有null的，也不会存入，如 field3 在存入时为 null 或 ""，则不会存入solr中
 * 最终结果如下：
 * {
 *         "id":"3447250f6e9d49deb2527c30da832046",
 *         "field1":"李四",
 *         "field2":"18",
 *         "_version_":1724391455339839488
 * }
 *
 *
 * @author 中国印
 * @date 2022年02月10日 01:14:34
 */
@ApiModel("solr保存请求对象")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SolrSaveFrm {

    @ApiModelProperty(value = "solr core中的主键ID，不传为新增，传则更新", example = "3447250f6e9d49deb2527c30da832046")
    @Field
    private String id;

    @ApiModelProperty("字段1")
    @Field
    private String field1;

    @ApiModelProperty("字段2")
    @Field
    private String field2;

    @ApiModelProperty("字段3")
    @Field
    private String field3;

    @ApiModelProperty("字段4")
    private String field4;
}
